home *** CD-ROM | disk | FTP | other *** search
- // ===============================================================
- // Vertex Program:
- // Description: 2D shadow map pass with env radiosity
- // Last Update: 14/08/2003
- // Coder: Andrey Honich
- // ===============================================================
-
- #include "../CGVPMacro.csi"
-
- VertAttributes { POSITION_3 TEXCOORD0_2 TNORMAL_3 }
-
- NoFog
- MainInput { VIEWPROJ_MATRIX, uniform float4x4 TexGen0, uniform float4 EnvColors[6], uniform float4x4 TexMatrix }
- DeclarationsScript
- {
- IN_T0_TN
- OUT_T0_T1_C0
- }
- PositionScript = PosCommon
- CoreScript
- {
- OUT.Tex0 = mul(TexGen0, vPos);
- OUT.Tex1.xy = IN.TexCoord0.xy;
-
- // Calculate average radiosity color from 6 colors (Cube)
- float3 tNormal;
- tNormal = mul((float3x3)TexMatrix, IN.TNormal.xyz);
- float3 Compare1 = step(tNormal, 0);
- float3 Compare0 = 1 - Compare1;
- float3 signN = sign(tNormal);
- tNormal = tNormal * tNormal;
- tNormal = tNormal * signN;
- float4 ColorX = EnvColors[0]*tNormal.x*Compare0.x + EnvColors[1]*(-tNormal.x)*Compare1.x;
- float4 ColorY = EnvColors[2]*tNormal.y*Compare0.y + EnvColors[3]*(-tNormal.y)*Compare1.y;
- float4 ColorZ = EnvColors[4]*tNormal.z*Compare0.z + EnvColors[5]*(-tNormal.z)*Compare1.z;
- OUT.Color = (ColorX + ColorY + ColorZ) * 2.0;
- }
-